package com.guomei.mapper.curse;

import com.guomei.bean.curse.CourseCategoryRelation;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 课程与类别关联表Mapper接口
 */
@Mapper
public interface CourseCategoryRelationMapper {
    /**
     * 新增课程类别关联
     * @param relation 课程类别关联实体
     * @return 影响行数
     */
    int insert(CourseCategoryRelation relation);

    /**
     * 根据ID删除课程类别关联
     * @param id 关联ID
     * @return 影响行数
     */
    int deleteById(Long id);

    /**
     * 根据课程ID删除关联
     * @param courseId 课程ID
     * @return 影响行数
     */
    int deleteByCourseId(Long courseId);

    /**
     * 根据类别ID删除关联
     * @param categoryId 类别ID
     * @return 影响行数
     */
    int deleteByCategoryId(Long categoryId);

    /**
     * 根据课程ID和类别ID删除关联
     * @param courseId 课程ID
     * @param categoryId 类别ID
     * @return 影响行数
     */
    int deleteByCourseIdAndCategoryId(@Param("courseId") Long courseId, @Param("categoryId") Long categoryId);

    /**
     * 根据ID查询课程类别关联
     * @param id 关联ID
     * @return 课程类别关联实体
     */
    CourseCategoryRelation selectById(Long id);

    /**
     * 根据课程ID查询关联的类别ID列表
     * @param courseId 课程ID
     * @return 类别ID列表
     */
    List<Long> selectCategoryIdsByCourseId(Long courseId);

    /**
     * 根据类别ID查询关联的课程ID列表
     * @param categoryId 类别ID
     * @return 课程ID列表
     */
    List<Long> selectCourseIdsByCategoryId(Long categoryId);

    /**
     * 根据类别ID和课程id查询关联的课程ID列表
     * @param categoryId 类别ID
     * @return 课程ID列表
     */
    CourseCategoryRelation selectCourseIdsAndCategoryId(@Param("courseId") Long courseId, @Param("categoryId") Long categoryId);

    /**
     * 批量添加课程类别关联
     * @param relations 课程类别关联列表
     * @return 影响行数
     */
    int batchInsert(@Param("relations") List<CourseCategoryRelation> relations);
    /**
     * 根据条件查询课程分类关联列表
     * @param relation 查询条件
     * @return 课程分类关联列表
     */
    List<CourseCategoryRelation> selectByCondition(CourseCategoryRelation relation);
}
